// RingBuffer.hh
// 缓冲层统一接口 - 合并ringfifo和RingBufferImpl
// 提供C接口（ringfifo）和C++接口（IDataBuffer实现）

#ifndef BUFFER_RING_BUFFER_HH
#define BUFFER_RING_BUFFER_HH

#include "../service/IDataBuffer.hh"

extern "C" {
    #include "ringfifo.h"
}

// 基于环形缓冲区的数据缓冲区实现（C++接口）
class RingBuffer : public IDataBuffer {
public:
    // 创建新的环形缓冲区实现
    static RingBuffer* createNew(int bufferSize);
    
    // 析构函数
    virtual ~RingBuffer();
    
    // 实现IDataBuffer接口
    virtual int getFrame(FrameInfo& info) override;
    virtual void putFrame(unsigned char* buffer, int size, int frameType) override;
    virtual void reset() override;
    virtual bool hasData() const override;
    
private:
    // 构造函数（私有，使用工厂方法）
    RingBuffer(int bufferSize);
    
    // 成员变量
    int fBufferSize;  // 缓冲区大小
};

// 向后兼容：RingBufferImpl作为RingBuffer的别名
typedef RingBuffer RingBufferImpl;

#endif // BUFFER_RING_BUFFER_HH
